//require
// 是动态的(相当于就是调用readFile api) 可以在代码块中动态导入 它是运行时加载
// 模块输出的是值的拷贝
//import
// 是静态的 是编译时加载 且不可在代码块中导入
// 模块输出的是值的引用
/*if(true){
  require('./a');

  // import a from './a'; //SyntaxError: D:\x\node_tutorial\5.es6module\src\index.js: 'import' and 'export' may only appear at the top level (6:2)
}*/



/*import {a,b} from './b';
console.log(a,b); // 1, 3*/



// esmodule模块输出的是值的引用
/*import {a,b} from './c';
setInterval(()=>{
  console.log(a,b);
},1000)*/


/*import {c,b} from './d';
setInterval(() => {
  console.log(c, b);
}, 1000);*/





// import {a, b, default as c} from './e';
// import c,{a, b} from './e';
// console.log(c);


/*import * as obj from './e';
console.log(obj.default);*/



/*import * as obj from './useE';

console.log(obj);*/



//import 会变量提升(声明和提升)，但不能重复声明
/*console.log(obj);
import * as obj from './useE';
// var obj = 111; //←会报错 SyntaxError: D:\x\node_tutorial\5.es6module\src\index.js: Identifier 'obj' has already been declared (56:4)*/


//实验性语法 import() ← 依赖@babel/plugin-syntax-dynamic-import插件
//import()返回一个promise
if(true){
  setTimeout(()=>{
    //↓默认会将`./e`对应的那个文件打包成一个叫1.bundle.js的文件(数字会随着import()的文件数往上磊)
    //想要自定义名字的话可以使用魔术字符串↓ 这样就会打包成video.bundle.js
    import(/* webpackChunkName: 'video' */'./e').then(data=>{
      console.log('----');
      console.log(data);
    })
  },3000)
}
